import Axios from 'axios'
import store from '../store'
//通过调用 AxiosStatic 的create方法 传入一个配置对象 返回一个  AxiosInstance
const Ajax = Axios.create({
    // baseURL: window.BASE_URL
    baseURL: '/apis'
})

//axios实例（ajax）的拦截器 分为 请求前 和 响应后 
//，使用axios实例（ajax）的拦截器 在请求前拦截
Ajax.interceptors.request.use(config => {
     let token = store.getState().common.token,
         other = ['/user/login']
        if (other.includes(config.url)) {
            return config
        }else {
            if (!!token) {  //如果有 token
                config.headers.token = token
                return config
            }else{ //若果没有 就拦截请求
                return Promise.reject({code: 900, message:'token 票据已经失效，请重新登陆'})
            }
        }
})

// 导出一些方法
const request = req => {
    //get请求只能用params传值 ？******
    return new Promise(resolve => {
        Ajax({
            url: req.url,
            method: req.method || 'GET',
            params: req.params || {},   
            data: req.data || {}
        }).then( ({data}) => {
            resolve(data)
        }).catch(e => {
            resolve(e)
        })
    })
}
export  default request
